1 module dataframe.main; 2 import dataframe.dataframe; 3 import hdf5.hdf5; 4 5 import std.exception; 6 import std.stdio; 7 import std.conv; 8 import std.csv; 9 import std.datetime; 10 import std.exception; 11 import std.range:array, stride,only; 12 import std.stdio; 13 import std.variant; 14 import std.string:isNumeric; 15 alias KalVariant=Algebraic!(string,int,long, DateTime, float,double); 16 import std.typecons:tuple,Tuple; 17 18 auto splitLongTicker(string longTicker) 19 { 20 import std.string:split; 21 Tuple!(string,"exchange",string,"ticker") ret; 22 auto tmp=longTicker.split("/"); 23 enforce(tmp.length==2); 24 ret.exchange=tmp[0]; 25 ret.ticker=tmp[1]; 26 return ret; 27 } 28 29 30 void main1(string[] args) 31 { 32 import std.string:toLower; 33 enforce(args.length==3); 34 auto splitTicker=splitLongTicker(args[2]); 35 auto readFrame=dataFrameTypedFromSimpleHDF5Array(args[1],splitTicker.exchange, splitTicker.ticker, 36 ["Year","Month","Day","Open","High","Low","Close","Volume","Adj Close"]); 37 writefln("%s",readFrame.toString); 38 //writefln("%s,%s",readFrame[0].Year,readFrame[0].Close); 39 //readFrame[0].Year=99999; 40 //writefln("%s,%s",readFrame[0].Year,readFrame[0].Close); 41 //double d=readFrame[0].Close; 42 //writefln("%s",d); 43 //writefln("%s/%s",readFrame.loadCell!double(0,"Month"), readFrame.loadCell!double(0,"Close")); 44 //writefln("%s/%s",readFrame[0].loadCell!double("Month"),readFrame[0].loadCell!double("Close")); 45 } 46 47 48 void main2(string[] args) 49 { 50 import std.string:toLower; 51 //string fn="/hist/daily/eoddata/WCE_20150721.txt"; 52 //if (args.length>=2) 53 // fn=args[1]; 54 //auto titles=["Ticker","Date","Open","High","Low","Close","Volume","Open Interest"]; 55 //auto typedFrame=typedFrameFromCSV(fn,titles); 56 //typedFrame=typedFrame.mergeFrames(typedFrameFromCSV("/hist/daily/eoddata/WCE_20150720.txt",titles)); 57 58 /+ DataFrame frame; 59 frame=frame.loadCSVFile(fn,true); 60 //writefln("%s",frame.toString); 61 auto types=frame.findColumnTypes; 62 63 auto peek=(cast(string)std.file.read(fn)).peekCols; 64 DataFrameTyped typedFrame; 65 auto titles=["Ticker","Date","Open","High","Low","Close","Volume","Open Interest"]; 66 /*ColumnType[] columnTypes; 67 with(ColumnType) 68 columnTypes=[String,String,Double,Double,Double,Double,Int,Int];*/ 69 if (peek<titles.length) 70 { 71 titles.length=peek; 72 //columnTypes.length=peek; 73 writefln("shortening to %s cols", peek); 74 } 75 typedFrame=typedFrame.setColumnTitles(titles) 76 .setColumnTypes(types) // columnTypes 77 .loadCSVFile(fn,titles,true);+/ 78 //writefln("%s", typedFrame); 79 //typedFrame.saveCSV("temp.csv",true); 80 // writefln("%s",frame.toString); 81 //writefln("%s",frame.findColumnTypes); 82 //auto fn="/hist/hdf5/eod_FOREX.h5"; 83 enforce(args.length>=2); 84 auto fn=args[1]; 85 //auto series="AUDUSD"; 86 enforce(args.length>=3); 87 auto destFn=args[2]; 88 //writefln("%s",dataTypesForHDF5(fn,series)); 89 //writefln("%s",dataTypesForHDF5("/hist/hdf5/equitymain.hdf5","NASDAQ/AAPL")); 90 if(args.length==4) 91 { 92 auto readFrame=dataFrameTypedFromHDF5DataSet(fn,args[3]); 93 readFrame.toHDF5(destFn,args[3]); 94 } 95 else 96 { 97 foreach(ticker;fn.hdf5Contents) 98 { 99 if ((ticker==".") || (ticker=="..")) 100 continue; 101 try 102 { 103 auto readFrame=dataFrameTypedFromHDF5DataSet(fn,ticker); 104 readFrame.toHDF5(destFn,ticker); 105 } 106 catch(Exception e) 107 { 108 stderr.writefln("* error - skipping %s:%s",ticker,e.msg); 109 } 110 //writefln("%s",readFrame.toString); 111 //readFrame.saveCSV(series.toLower~".csv",true); 112 //readFrame.deleteColumn("openInterest"); 113 } 114 } 115 //auto h5=dataFrameTypedFromHDF5DataSet("/hist/hdf5/bb/equityindex/IndexTickers.h5","CAC Index"); 116 //writefln("%s",h5.toString); 117 } 118 119 void main(string[] args) 120 { 121 writefln("dummy main"); 122 }